# Contributor: Michael Pirogov <vbnet.ru@gmail.com>
# Contributor: jv <jens@eisfair.org>
# Contributor: Adrian Guenter <adrian@gntr.me>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: jv <jens@eisfair.org>
pkgname=syslog-ng
pkgver=3.27.1
pkgrel=0
pkgdesc="Next generation logging daemon"
url="https://www.syslog-ng.com/products/open-source-log-management/"
arch="all"
license="GPL-2.0-or-later"
options="!check" # unit tests require https://github.com/Snaipe/Criterion with deps
makedepends="
	curl-dev
	eventlog-dev
	file
	bison
	flex
	autoconf
	automake
	libtool
	glib-dev
	hiredis-dev
	ivykis-dev>=0.42.4
	libdbi-dev
	json-c-dev
	openssl-dev
	pcre-dev
	python3-dev
	rabbitmq-c-dev
	"
install="$pkgname.post-install $pkgname.post-upgrade"
subpackages="
	$pkgname-scl::noarch
	$pkgname-dev
	$pkgname-doc
	$pkgname-openrc
	py3-$pkgname:_python3
	"
source="https://github.com/balabit/syslog-ng/releases/download/syslog-ng-$pkgver/syslog-ng-$pkgver.tar.gz
	$pkgname.conf
	$pkgname.logrotate
	$pkgname.initd
	"

_modules="
	add-contextual-data
	amqp:afamqp
	examples
	graphite
	http
	json:json-plugin
	map-value-pairs
	redis
	sql:afsql
	stardate
	stomp:afstomp
	tags-parser
	xml
	"
for _i in $_modules; do
	subpackages="$subpackages $pkgname-${_i%%:*}:_module"
done

prepare() {
	default_prepare

	# Remove bundled libraries
	rm -rf lib/ivykis
	rm -rf modules/afamqp/rabbitmq-c
	rm -rf modules/afmongodb/mongo-c-driver
	autoreconf -if
}

build() {
	./configure \
		--prefix=/usr \
		--sysconfdir=/etc/syslog-ng \
		--localstatedir=/run \
		--enable-extra-warnings \
		--enable-ipv6 \
		--enable-manpages \
		\
		--enable-sql \
		--disable-linux-caps \
		--disable-mongodb \
		--enable-json \
		--enable-amqp \
		--enable-stomp \
		--disable-smtp \
		--enable-http \
		--enable-redis \
		--enable-geoip \
		--disable-geoip2 \
		--disable-riemann \
		--disable-systemd \
		--enable-python \
		--disable-java \
		--disable-java-modules \
		--enable-native \
		--enable-rdrand \
		--with-ivykis=system \
		--with-jsonc=system \
		--with-librabbitmq-client=system
	make
}

package() {
	make -j1 DESTDIR="$pkgdir" install

	cd "$pkgdir"

	rm -rf run usr/lib/$pkgname/libtest

	# getent module doesn't build properly as musl doesn't support reentrant
	# getprotoby[number|name] funcs. The provided compat lib only patches
	# solaris, which does provide reentrant versions under a different sig
	rm -f usr/lib/$pkgname/libtfgetent.so

	# Remove static file
	rm -f usr/lib/libsyslog-ng-native-connector.a

	install -m 644 "$srcdir"/$pkgname.conf etc/$pkgname/$pkgname.conf
	install -D -m 755 "$srcdir"/$pkgname.initd etc/init.d/$pkgname
	install -D -m 644 "$srcdir"/$pkgname.logrotate etc/logrotate.d/$pkgname

	install -d -m 755 etc/$pkgname/conf.d
	install -d -m 700 "$pkgdir"/var/lib/syslog-ng
}

scl() {
	pkgdesc="$pkgdesc (configuration library)"
	depends="$pkgname=$pkgver-r$pkgrel"

	_submv usr/share/syslog-ng/include/scl
}

dev() {
	default_dev

	_submv usr/share/syslog-ng/tools \
		usr/share/syslog-ng/xsd
}

_python3() {
	pkgdesc="$pkgdesc (python3 module)"

	_submv usr/lib/syslog-ng/libmod-python.so

	local site_pkgs="$(python3 -c 'import site; print(site.getsitepackages()[0])')"

	mkdir -p "$subpkgdir"/"$site_pkgs"
	mv "$pkgdir"/usr/lib/syslog-ng/python/* \
		"$subpkgdir"/"$site_pkgs"
}

_module() {
	local name="${subpkgname#$pkgname-}"
	pkgdesc="$pkgdesc (${name//-/ } module)"

	local libname=$(printf '%s\n' $_modules | grep "^$name:" | cut -d: -f2)
	local soname="lib${libname:-$name}.so"

	_submv usr/lib/syslog-ng/$soname
}

_submv() {
	local path; for path in "$@"; do
		mkdir -p "$subpkgdir/${path%/*}"
		mv "$pkgdir"/$path "$subpkgdir"/${path%/*}/
	done
}

sha512sums="a845e27b76904841fbf47af8ec0af79916b8782e982d202889669e2f569cc7aa3af4d8da7d3f56bae223f335589cb20d5bab082c98339cd952e6a7de1e65aef4  syslog-ng-3.27.1.tar.gz
3e844f70564325f7b356e6cb6310c72473aedc14f8be3c3c7eb262184c84523648d3ea1de1aa40489529c97343026481e790ad92dfbcdc410a94e734fd744fc0  syslog-ng.conf
1825b85fb584c5cecf0ad370e81a7473b5c973ce10adce386d1ba5f68432abe4e2f54c937d7d94edb22dbd9031eff483bd113bc3244ce0d0072cf4bf4ab5c2cc  syslog-ng.logrotate
873fef8815131f0acc618fa4911cd1eda59e260adc1eaae6eb91034900ce789f05ee48fa8afa4a87763026c18c87aef351e7ea76e0cbb46bcd5297f9ca14d527  syslog-ng.initd"
